import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Point;
import java.awt.Polygon;
import java.awt.geom.AffineTransform;
import java.awt.geom.Line2D;
import java.io.Serializable;

public class LigacaoIdentificadorDestino extends Ligacao implements Serializable {

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 8362332499149683033L;
	/**
	 * 
	 */

	private Coordenada coordenada;

	public LigacaoIdentificadorDestino(Identificador identificador,
			Identificador identificadorDestino) {
		super(identificador, identificadorDestino);
		// TODO Auto-generated constructor stub
	}

	public Coordenada getCoordenada() {
		return coordenada;
	}

	public void setCoordenada(Coordenada coordenada) {
		this.coordenada = coordenada;
	}

	@Override
	public void desenhar(Graphics graphics) {
		// TODO Auto-generated method stub
		graphics.setColor(Color.black);

		Coordenada centroIdentificador = identificador.getRetanguloEnvolvente()
				.getCentro();

//		Coordenada centroIdentificadorDestino = identificadorDestino
//				.getRetanguloEnvolvente().getCentro();
//
//		Conetor pontoIdentificadorDestino = identificadorDestino
//				.getPontosConetores();
		
	
		

		Point pontoConetorDestino = identificadorDestino.getConetor().contem(identificador, coordenada);
		
		
		System.out.println("DEVOLEVEU:"+ pontoConetorDestino);
		

		Graphics2D g2 = (Graphics2D) graphics.create();
		Line2D.Double line;
		Polygon arrowHead = new Polygon();
		arrowHead.addPoint(0, 5);
		arrowHead.addPoint(-5, -5);
		arrowHead.addPoint(5, -5);

		if (identificadorDestino != null) {
			line = new Line2D.Double(centroIdentificador.getX(),
					centroIdentificador.getY(), pontoConetorDestino.getX(), pontoConetorDestino.getY()
						 );
			g2.draw(line);

		}
		else
		{
			 line = new Line2D.Double(centroIdentificador.getX(),
					centroIdentificador.getY(),pontoConetorDestino.getX(), pontoConetorDestino.getY());
			g2.draw(line);
		}
		
		AffineTransform tx = new AffineTransform();
		tx.setToIdentity();
		double angle = Math.atan2(line.y2 - line.y1, line.x2 - line.x1);
		tx.translate(line.x2, line.y2);
		tx.rotate((angle - Math.PI / 2d));

		Graphics2D g = (Graphics2D) g2.create();
		g.setTransform(tx);
		g.fill(arrowHead);
		g.dispose();
	}
}
